/**
 * 给定N，将N看作字符串，得到N的N次方的一个大数字
 * 求其对MOD取模的结果
 * 大数字实际上就等于 N * (1 + K + ... + K^(N-1))
 * 其中K是10的幂，如果N是两位数，K就是100；N是三位数，K就是1000，...
 * N的范围在1E18，因此N要先取模再去乘，否有可能溢出 
 */
#include <bits/stdc++.h>
using namespace std;

using llt = unsigned long long;
llt const MOD = 998244353ULL;

llt qpow(llt a, llt n){
    llt ret = 1;
    while(n){
        if(n & 1) ret = ret * a % MOD;
        a = a * a % MOD;
        n >>= 1;
    }
    return ret;
}

llt inv(llt x){return qpow(x % MOD, MOD-2LL);}

llt N;

llt proc(llt n, llt k){
    llt ans = 0;
    for(int i=0;i<n;++i){
        ans = (ans * k % MOD + n) % MOD;
    }
    return ans;
}


void work(){
    cin >> N;
    if(0 == N % MOD) return (void)(cout << "0\n");

    llt k = 1;
    llt n = N;
    while(n){
        n /= 10;
        k = k * 10;
    }
    auto ans = (qpow(k % MOD, N) + MOD - 1) % MOD  * inv(k + MOD - 1) % MOD;    
    ans = ans * (N % MOD) % MOD;
    cout << ans << endl;
    // cout << proc(N, k) << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase; 
    while(nofkase--) work();
    return 0;
}